Today's word processors and dedicated drawing application programs enable users to create both simple and complex graphics. These programs allow users to create graphics using a variety of shapes which may be annotated with text. The graphics created by these applications may be stand-alone documents or incorporated into text documents. Despite the advantages offered by these programs, however, today's versions of these programs suffer from several drawbacks which hinder the creation and layout of graphics by the typical user.
One particular drawback of current drawing programs is a result of shortcomings present in the creation of dynamic graphics. Dynamic graphics are graphics that may include a potentially infinite number of shapes that size and position themselves based upon the overall number of shapes required to hold the data. For instance, one example of a dynamic graphic is a flowchart in which new shapes are dynamically added, sized, and positioned, each time new data is added to the flowchart. A flowchart lends itself well to dynamic creation as do some other types of graphics, such as organizational charts.
While some types of graphics lend themselves well to dynamic creation, other types of graphics do not. In particular, a category of graphics work best with a specific finite number of shapes. Examples of this type of graphic include a three-sided triangle, a pillar graphic that requires at least two pillars, or pairs of arrows arranged in specific configurations. Graphics within this category often do not lend themselves to dynamic creation because they often include complex shapes or interlocking parts that require complex algorithms to determine the appropriate sizing and positioning. These graphics are generally too complex for the generalized algorithms utilized by dynamic layout routines. Certain types of graphics also do not work with dynamic layout routines because these graphics are created to display a specific set of data. For these graphics the placement and sizing of shapes oftentimes must be exact to achieve the desired result. Graphics generated dynamically from data cannot maintain specific tolerances and still be adaptive to the graphic generating the data.
Another frustration for users of current drawing programs stems from the limitations of the graphic templates provided by these programs. When creating graphics from such templates, a user often has to make manual adjustments to the graphic unless their data fits the template exactly. If nodes are added to or removed from the graphic, the graphic structure must be recreated. Alternatively, a user may be forced to select a template that best fits their data rather than selecting the template that is simply the best for the user's intended purpose. Moreover, a user is often required to edit and resize text and shapes within the graphic to fit their data while preserving the overall structure of the graphic. Additionally, as the size of the canvas containing the graphic changes, the user must manually recreate or resize shapes to take best advantage of the available space. In some cases, the graphic may scale with the canvas size but this typically results in less than optimal placement and size of the shapes and results in additional manual adjustment by the user. This process of continually adjusting the size of text and shapes to fit the user's data set and the canvas size can be extremely time consuming and frustrating for a user.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.